当前位置:  开发笔记 > 编程语言 > 正文

使用[^ a-zA-Z]正则表达式替换单词时出现问题

如何解决《使用[^a-zA-Z]正则表达式替换单词时出现问题》经验,为你挑选了1个好方法。

只是无法得到这一个,谷歌搜索也没有多大帮助..

首先我知道:给定一个字符串和一个正则表达式,如何用替换字符串替换所有匹配此正则表达式的字符串?在String类中使用replaceAll()方法.

现在我无法做到的事情.我现在在我的代码中的正则表达式是[^ a-zA-Z],我确信这个正则表达式肯定会有一个范围.只有一些字符可能会添加到列表中.在下面的代码中我需要输出的是Worksheet + blah但是我使用replaceAll()得到的是Worksheet ++++ blah

String homeworkTitle = "Worksheet%#5_blah";
String unwantedCharactersRegex = "[^a-zA-Z]";
String replacementString = "+";
homeworkTitle = homeworkTitle.replaceAll(unwantedCharactersRegex,replacementString);
System.out.println(homeworkTitle);

实现我希望的输出的方法是什么?我在这里缺少任何Java方法吗?



1> VonC..:
[^a-zA-Z]+

会做得很好.

你需要一个贪婪的量词来匹配尽可能多的非字母字符,并将所有匹配替换为一个'+'(a - 默认情况下 - 贪心量词)

注意:[^a-zA-Z]+?会使'+'量词变得懒惰,并且会给你相同的结果[^a-zA-Z],因为它一次只匹配一个非字母字符.

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有